package it.polimi.TravelDream.web.beans;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import it.polimi.TravelDream.ejb.dtos.AddressDTO;
import it.polimi.TravelDream.ejb.dtos.PackageDTO;
import it.polimi.TravelDream.ejb.dtos.UserDTO;
import it.polimi.TravelDream.ejb.eaos.BasicPackageList;
import it.polimi.TravelDream.ejb.eaos.UserMgr;

@ManagedBean(name = "package")
@SessionScoped
public class BasicPackageBean {
	
	@EJB
	private BasicPackageList packageList;
	@EJB
	private UserMgr userMgr;
	private PackageDTO currentPackage = new PackageDTO();
	private String msg;
	
	public BasicPackageBean() {
	}
	
	public String create(UserDTO userDTO) {  
		boolean flightValue = packageList.checkFlight(currentPackage.getStartingDate(), currentPackage.getExpirationDate(), currentPackage.getCity());
		boolean roomValue = packageList.checkRoom(currentPackage.getCity(), currentPackage.getNation());
		
		if( !flightValue && !roomValue ) {
			msg = "Errore! Non ci sono ne voli ne camere presenti nel pacchetto che hai appena tentato di creare. Inseriscili oppure cambia pacchetto.";
			return "packageError?faces-redirect=true";
		} else if( flightValue && !roomValue ) {
			msg = "Errore! Non ci sono camere presenti nel pacchetto che hai appena tentato di creare. Inserisci nuove camere oppure cambia pacchetto!";
			return "packageError?faces-redirect=true";
		} else if( !flightValue && roomValue) {
			msg = "Errore! Non ci sono voli presenti nel pacchetto che hai appena tentato di creare. Inserisci nuovi voli oppure cambia pacchetto!";
			return "packageError?faces-redirect=true";
		} else {
			packageList.createPackage(currentPackage, this.userMgr.getUserDTO());
			return "home?faces-redirect=true";
		}
    } 
	
	public String goToCreatePackage() {
		return "package?faces-redirect=true";
	}
	
	public String goToSearchPackage() {
		return "search package?faces-redirect=true";
	}

	public PackageDTO getCurrentPackage() {
		return currentPackage;
	}

	public void setCurrentPackage(PackageDTO currentPackage) {
		this.currentPackage = currentPackage;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

}

